package Algorithm.sort;

import java.util.Arrays;
import java.util.Scanner;

/**
 * 179. 最大数 https://leetcode.cn/problems/largest-number
 * 题目简述：给出N个正整数，如5,51,56，求将这些数连接起来所组成的最大的数
 */
public class JoinNum {

    /**
     * 思路：从最小问题出发，只有两个数时直接compare组合决定顺序即可，后续再插入其他数时，需依次与每个数compare组合决定插入位置
     * 即将数组重新排序，排序的两两比较的规则为应使两个数拼接起来较大，(str2 + str1).compareTo(str1 + str2)
     */
    public String largestNumber(int[] nums) {
        String[] ss = new String[nums.length];
        for (int i = 0;i < nums.length;i++)
            ss[i] = String.valueOf(nums[i]);
        Arrays.sort(ss, (str1, str2) -> {
            //注意范围问题，只能通过字符串比较，转成数字比较可能溢出
            return (str2 + str1).compareTo(str1 + str2);//大的在前
        });
        String str = String.join("", ss);
        for (int i = 0;i < str.length();i++) //排除字符串全0的情况
            if (str.charAt(i) != '0')
                return str;
        return "0";
    }


    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] ss = sc.nextLine().split(",");
        Arrays.sort(ss, (str1, str2) -> {
            //注意范围问题，只能通过字符串比较，转成数字比较可能溢出
            return (str2 + str1).compareTo(str1 + str2);//大的在前
        });
        System.out.println(String.join("", ss));

    }
}
